package Garagem.Persistencia;

/**
 *
 * @author pablo
 */
import Negocio.Usuario;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;

public class UsuarioDAO extends BaseDAO<Usuario> {

    private Connection con = null;

    public void salva(Usuario usuario) {

        try {

            con = Conexao.novaConexao();

            String SQL = "INSERT INTO usuario (login, hashsenha) VALUES (?, ?)";
            PreparedStatement cmd = con.prepareStatement(SQL);
            cmd.setString(1, usuario.getDescricao());
            cmd.setString(2, usuario.getSenha());

            if (cmd.executeUpdate() == 0) {
                throw new RuntimeException("Erro ao salvar o ator");
            }

            con.commit();

        } catch (Exception e) {
            e.printStackTrace();
        }
            try {
                con.rollback();
            } catch (SQLException sqle) {
                System.err.println(sqle);
            }

    }

    public Usuario findById(int id) {
        Usuario usuario = null;
        con = Conexao.novaConexao();
        try {

            String SQL = "SELECT * FROM usuario WHERE id = ?";

            PreparedStatement cmd = con.prepareStatement(SQL);
            cmd.setInt(1, id);
            ResultSet rows = cmd.executeQuery();

            while (rows.next()) {
                usuario = new Usuario();
                //      usuario.setId(rows.getInt(1));
                usuario.setDescricao(rows.getString(2));
                usuario.setSenha(rows.getString(4));
            }

        } catch (SQLException e) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, e);
            throw new BancoDadosException("não foi possível ler o usuário", e);
        }
        return usuario;
    }

    public Usuario findByUsuarioESenha(String descricao, String senha) {
        Usuario usuario = null;
        con = Conexao.novaConexao();
        try {
            String SQL = "SELECT * FROM usuario WHERE login = ? AND hashsenha = ?";

            PreparedStatement cmd = con.prepareStatement(SQL);
            cmd.setString(1, descricao);
            cmd.setString(2, senha);
            ResultSet rows = cmd.executeQuery();

            while (rows.next()) {
                usuario = new Usuario();
                usuario.setDescricao(rows.getString(1));
                usuario.setSenha(rows.getString(2));
            }

        } catch (SQLException e) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, e);
            throw new BancoDadosException("não foi possível ler o usuário", e);
        }
        return usuario;
    }

    @Override
    public Usuario preenche(ResultSet rows) {
        Usuario usuario = new Usuario();
        try {
            //    usuario.setId(rows.getInt(1));
            usuario.setDescricao(rows.getString(2));
            usuario.setSenha(rows.getString(3));
        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return usuario;

    }

    @Override
    public String tabela() {
        return "usuario";
    }
}
